from abc import ABC, abstractmethod
from typing import List, Dict, TypeVar, Generic


T = TypeVar('T')

class IReader(ABC, Generic[T]):
    @abstractmethod
    def _get_file_list(self) -> List[str]: ...
    
    @abstractmethod
    def _read_single_file(self, file_path: str) -> List[T]: ...
    
    @abstractmethod
    def process_all_files(self, folder_path: str) -> Dict[str, List[T]]: ...
